package com.ruoyi.system.service.impl;

import java.util.List;

import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.MemberSetMenuMapper;
import com.ruoyi.system.domain.MemberSetMenu;
import com.ruoyi.system.service.IMemberSetMenuService;

/**
 * 会员套餐订单Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-04-21
 */
@Service
public class MemberSetMenuServiceImpl implements IMemberSetMenuService 
{
    @Autowired
    private MemberSetMenuMapper memberSetMenuMapper;

    /**
     * 查询会员套餐订单
     * 
     * @param id 会员套餐订单主键
     * @return 会员套餐订单
     */
    @Override
    public MemberSetMenu selectMemberSetMenuById(String id)
    {
        return memberSetMenuMapper.selectMemberSetMenuById(id);
    }

    /**
     * 查询会员套餐订单列表
     * 
     * @param memberSetMenu 会员套餐订单
     * @return 会员套餐订单
     */
    @Override
    public List<MemberSetMenu> selectMemberSetMenuList(MemberSetMenu memberSetMenu)
    {
        return memberSetMenuMapper.selectMemberSetMenuList(memberSetMenu);
    }

    /**
     * 新增会员套餐订单
     * 
     * @param memberSetMenu 会员套餐订单
     * @return 结果
     */
    @Override
    public int insertMemberSetMenu(MemberSetMenu memberSetMenu)
    {
        memberSetMenu.setCreateTime(DateUtils.getNowDate());
        return memberSetMenuMapper.insertMemberSetMenu(memberSetMenu);
    }

    /**
     * 修改会员套餐订单
     * 
     * @param memberSetMenu 会员套餐订单
     * @return 结果
     */
    @Override
    public int updateMemberSetMenu(MemberSetMenu memberSetMenu)
    {
        memberSetMenu.setUpdateTime(DateUtils.getNowDate());
        return memberSetMenuMapper.updateMemberSetMenu(memberSetMenu);
    }

    /**
     * 批量删除会员套餐订单
     * 
     * @param ids 需要删除的会员套餐订单主键
     * @return 结果
     */
    @Override
    public int deleteMemberSetMenuByIds(String[] ids)
    {
        return memberSetMenuMapper.deleteMemberSetMenuByIds(ids);
    }

    /**
     * 删除会员套餐订单信息
     * 
     * @param id 会员套餐订单主键
     * @return 结果
     */
    @Override
    public int deleteMemberSetMenuById(String id)
    {
        return memberSetMenuMapper.deleteMemberSetMenuById(id);
    }

    @Override
    public JSONObject getRaiNum() {
        JSONObject res = new JSONObject();
        MemberSetMenu param = new MemberSetMenu();

        //设置订单状态为空，查询所有订单
        // 查询所有订单的会员设置菜单列表
        List<MemberSetMenu> allList = memberSetMenuMapper.selectMemberSetMenuList(param);
        // 将所有订单数量添加到结果中
        res.put("allStatusNum", allList != null ? allList.size() : 0);

        // 设置订单状态为待支付
        param.setOrderStatus("1");
        // 查询待支付的会员设置菜单列表
        List<MemberSetMenu> waitList = memberSetMenuMapper.selectMemberSetMenuList(param);
        // 将待支付订单数量添加到结果中
        res.put("waitPayStatusNum", waitList != null ? waitList.size() : 0);

        // 设置订单状态为已支付
        param.setOrderStatus("2");
        // 查询已支付的会员设置菜单列表
        List<MemberSetMenu> doList = memberSetMenuMapper.selectMemberSetMenuList(param);
        // 将已支付订单数量添加到结果中
        res.put("doPayStatusNum", doList != null ? doList.size() : 0);

        // 设置订单状态为已取消
        param.setOrderStatus("3");
        // 查询已取消的会员设置菜单列表
        List<MemberSetMenu> cancelList = memberSetMenuMapper.selectMemberSetMenuList(param);
        // 将已取消订单数量添加到结果中
        res.put("cancelPayStatusNum", cancelList != null ? cancelList.size() : 0);

        return res;
    }


}
